package GestionBilleterie;

import java.sql.SQLException;
import java.util.List;

/**
 * Classe réprésentant un vendeur de la billeterie
 * @author Aude Legrand, Alexandre Becquet
 */
public class Vendeur {
    private int id;
    private String log;
    private String nom;
    private String prenom;
    private boolean admin;

    /**
     * Constructeur de la classe Vendeur
     */
    public Vendeur() {
        
    }

    /**
     * Constructeur de la classe Client sans identifiant de la BD
     * @param log le log du vendeur
     * @param nom le nom du vendeur
     * @param prenom le prenom du vendeur
     * @param admin vrai si le vendeur est un admin
     */
    public Vendeur(String log,String nom,String prenom, boolean admin){
        this.log=log;
        this.nom=nom;
        this.prenom=prenom;
        this.admin=admin;
    }

    /**
     * Constructeur de la classe Client pour un client récupéré de la BD
     * @param id
     * @param log le log du vendeur
     * @param nom le nom du vendeur
     * @param prenom le prenom du vendeur
     * @param admin vrai si le vendeur est un admin
     */
    public Vendeur(int id,String log,String nom,String prenom, boolean admin){
        this.id=id;
        this.log=log;
        this.nom=nom;
        this.prenom=prenom;
        this.admin=admin;
    }

    /**
     * Créé un vendeur
     * @param unVendeur le Vendeur a créé
     */
    public static void create(Vendeur unVendeur) {
        try {
            unVendeur.setId(VendeurBD.saveVendeur(unVendeur));
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Modifier un vendeur
     * @param unVendeur le Vendeur a modifié
     */
    public static void edit(Vendeur unVendeur) {
        try {
            VendeurBD.updateVendeur(unVendeur);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Retourne tous les vendeurs
     * @return la liste des vendeurs
     */
    public static List<Vendeur> findEntities(){
        List<Vendeur> lesVendeurs = null;
        try {
            lesVendeurs = VendeurBD.readAllVendeur();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return lesVendeurs;
    }

    /**
     * Recherche un vendeur grâce à son id
     * @param idVendeur l'id du vendeur a cherché
     * @return le vendeur trouvé
     */
    public static Vendeur findEntitie(int idVendeur){
        Vendeur v = null;
        try {
            v=VendeurBD.readVendeur(idVendeur);
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return v;
    }

    /**
     * Retourne l'id du vendeur
     * @return l'id du vendeur
     */
    public int getId() {
        return this.id;
    }

    /**
     * Retourne le log du vendeur
     * @return le log du vendeur
     */
    public String getLog() {
        return this.log;
    }

    /**
     * Retourne le nom du vendeur
     * @return le nom du vendeur
     */
    public String getNom() {
        return this.nom;
    }

    /**
     * Retourne le prenom du vendeur
     * @return le prenom du vendeur
     */
    public String getPrenom() {
        return this.prenom;
    }

    /**
     * Test si le vendeur est un admin
     * @return vrai si le vendeur est un admin, faux sinon
     */
    public boolean isAdmin() {
        return this.admin;
    }

    /**
     * Test si le vendeur est un admin
     * @param log le log du vendeur
     * @param password le password du vendeur
     * @return vrai si le vendeur est un admin, faux sinon
     */
    public static Vendeur isAdmin(String log, String password) {
        Vendeur result = null;
        try {
            result=VendeurBD.verifAdmin(log, password);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return result;
    }

    /**
     * Test si le vendeur existe
     * @param log le log du vendeur
     * @param password le password du vendeur
     * @return vrai si le vendeur existe, faux sinon
     */
    public static Vendeur isVendeur(String log, String password) {
        Vendeur result = null;
        try {
            result=VendeurBD.verifVendeur(log, password);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return result;
    }

    /**
     * Definir le vendeur en admin
     * @param admin vrai si le vendeur est admin, faux sinon
     */
    public void setAdmin(boolean admin) {
        this.admin=admin;
    }

    /**
     * Met à jour le log du vendeur
     * @param log le nouveau log
     */
    public void setLog(String log) {
        this.log=log;
    }

    /**
     * Met à jour le nom du vendeur
     * @param nom le nouveau nom
     */
    public void setNom(String nom) {
        this.nom=nom;
    }

    /**
     * Met à jour le prenom du vendeur
     * @param prenom le nouveau prenom
     */
    public void setPrenom(String prenom) {
        this.prenom=prenom;
    }

    /**
     * Met à jour l'id du vendeur
     * @param unId le nouveau id
     */
    private void setId(int unId) {
        this.id=unId;
    }

    /**
     * Retourne une chaine de caractère representant le vendeur
     * @return la chaîne de caractère représentant le vendeur
     */
    public String toString(){
        return this.log;
    }
}
